﻿/**
 * @file      : python_test_dll.cpp
 * @brief     : 该文件的函数只是为了演示pyqt调用动态库, 函数功能可能无实际意义
 * @author    : huenrong (huenrong1028@gmail.com)
 * @date      : 2020-06-27 15:53:99
 *
 * @copyright : Copyright (c) 2020  胡恩荣
 *
 */
#include "pch.h"
#include "python_test_dll.h"
#include "log_write.h"
#include <stdio.h>

#pragma comment(lib, "ws2_32.lib")

static CLogWrite g_write_log = CLogWrite("python_test_dll_log");

/**
 * @brief  获取服务器信息
 * @param  get_server_ip: 获取到的服务器ip, 形如: "192.168.0.10"
 * @param  server_ip: 传入服务器ip, 形如: "192.168.0.10"
 * @return 成功: 0
 *         失败: -1
 */
extern "C" int _declspec(dllexport) WINAPI get_server_info(char *get_server_ip,
                                                           const char *server_ip)
{
    memcpy(get_server_ip, server_ip, strlen(server_ip));

    return 0;
}

/**
 * @brief  数组逆向拷贝
 * @param  dst_array: 拷贝后的数组
 * @param  dst_array_len: 拷贝后的数组长度
 * @param  src_array: 源数组
 * @param  src_array_len: 源数组长度
 * @return 成功: 0
 *         失败: -1
 */
extern "C" int _declspec(dllexport) WINAPI array_reverse_copy(unsigned char *dst_array,
                                                              unsigned char *dst_array_len,
                                                              const unsigned char *src_array,
                                                              const unsigned char src_array_len)
{
    // 逆向拷贝
    for (unsigned char i = (src_array_len - 1), j = 0; i > 0; i--, j++)
    {
        dst_array[j] = src_array[i];
    }
    dst_array[src_array_len - 1] = src_array[0];

    *dst_array_len = src_array_len;

    return 0;
}
